package com.das.mechanic_alone.mvp.contract.maintain;

import com.das.mechanic_base.base.X3IBaseView;
import com.das.mechanic_base.bean.alone.UnCompleteBean;
import com.das.mechanic_base.bean.common.UploadVideoBean;
import com.das.mechanic_base.bean.alone.AloneTitleBean;
import com.das.mechanic_base.bean.create.ServiceInfoBean;
import com.das.mechanic_base.bean.live.FetchLiveBean;
import com.das.mechanic_base.bean.main.CarPicAndColorBean;
import com.das.mechanic_base.bean.main.HomeMainCarBean;
import com.das.mechanic_base.bean.main.UpadateReceBean;
import com.das.mechanic_base.bean.main.UpdateReceiveCarBean;
import com.das.mechanic_base.bean.maintain.AdvanceTimeBean;
import com.das.mechanic_base.bean.maintain.CancelWorkBean;
import com.das.mechanic_base.bean.maintain.WorkBaseHeaderBean;

import java.io.File;
import java.util.List;
import java.util.Map;

public interface X3MainNewTainContract {

    interface View extends X3IBaseView {

        /**
         * 回传题目列表
         * @param aloneTitleBeans
         */
        void getAlone(List<AloneTitleBean> aloneTitleBeans);

        long providerWorkBaseId();

        /**
         * 报错信息
         * @param error
         */
        void navigateTain(String error);

        /**
         * 获取可以取消的项目list
         * @param cancelWorkBeans
         */
        void getCancelWorkList(List<CancelWorkBean> cancelWorkBeans);

        void finishCurrent();

        void showExitPager();

        /**
         * 显示提前施工按钮
         */
        void showAdvanceWork();

        /**
         * 未到施工时间并且无法提前开始施工
         */
        void showPointDialog(String content);

        /**
         * 点击了提前施工 开始计算倒计时
         */
        void updateAfterWork(AdvanceTimeBean advanceTimeBean);

        /**
         * 回传施工单技师及车辆信息
         */
        void getWorkBaseHeaderInfo(WorkBaseHeaderBean headerBean);

        /**
         * 提供接车单id
         * @return
         */
        long providerReceiveBaseId();

        /**
         * 设置ContainMe的参数
         * @param isContainMe
         */
        void setContainMe(boolean isContainMe);

        /**
         * 展示异常状态码
         */
        void showErrorStatus(long status);

        /**
         * 强制结束施工成功
         */
        void completeWorkForceSuccess();

        /**
         * 获取店铺正在直播的房间成功 正在直播的数量
         */
        void getStoreLiveRoomSuccess(long size);

        /**
         * 根据接车单id获取接车单数据
         *
         * @param mainCarBean
         */
        void getReceiveBase(HomeMainCarBean mainCarBean,boolean isShow);

        /**
         * 结束施工成功
         */
        void completeSuccess();

        void uploadCarPicSuccess(CarPicAndColorBean colorBean);

        /**
         * 回传vin
         *
         * @param vin
         */
        void getVin(String vin);

        void jumpComplete();

        /**
         * 更新接车单成功 需要上传默认头像
         */
        void updateReceiveSuccess(UpadateReceBean upadateReceBean);

        long providerCarId();

        void resetButton();

        void getSaveService(long num);

        void getLiveInfoSuccess(FetchLiveBean fetchLiveBean);

        void getUploadVideoSuccess(List<UploadVideoBean> uploadVideoBean);

        void onCompleteWork();

        void getUnCompleteListSuccess(List<UnCompleteBean> mList);

        void getWorkBaseSuccess(ServiceInfoBean.WorkBaseBean workBaseBean);
    }

    interface Presenter{

        /**
         * 获取题目的标题
         */
        void getAllCheck();

        /**
         * 取消施工
         */
        void getCancelWork();

        /**
         * 确定取消项目
         * @param
         */
        void affirmCancelWork(List<CancelWorkBean> mList, boolean isOne);

        /**
         * 提前施工
         */
        void updateAdavancService();


        void obtainWorkBase();

        /**
         * 强制结束施工
         */
        void completeWorkForce();

        /**
         * 获取店铺正在直播的房间轮询
         */
        void startStoreLiveRoom();

        /**
         * 停止轮询
         */
        void endStoreLiveRoom();

        void getReceiveBase(long receiveId,boolean isShow);

        /**
         * 结束施工
         * @param id
         */
        void completeWorkBase(long id, UpdateReceiveCarBean carBean,boolean isUpdate);

        /**
         * 上传车辆切割图
         */
        void uploadCarPic(long carId,String imgPath,String carNum);

        /**
         * 请求vin
         * @param carVin
         */
        void requestVin(File carVin);


        void updateCarProductionAndMiles(Map<String,Object> map,UpdateReceiveCarBean carBean);

        /**
         * 创建接车单 上传车主头像
         * @param imgFile
         */
        void uploadHeaderAws(File imgFile);

        /**
         * 获取购物车数据
         */
        void getDetectionServiceList();

        /**
         * 开启直播
         */
        void generateLiveInfoOnLocal(long carId,boolean isCarOwnerRequired,long workBaseId );

        void listLiveUploadVideo(long workBaseId);

        void getUnCompleteList(long workBaseId);

        void getWorkBase();
    }
}
